home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / cross / GBDK-2.0.lha / GBDK / examples / space.s < prev   
Text File  |  1998-10-01  |  36KB  |  1,297 lines

  1.     ;; Little demo illustrating how to use the graphical possibilities
  2.     ;;  of the GB (background, window and animated sprite)
  3.     ;; I have used fixed-point values for both the position and
  4.     ;;  speed of objects to get smooth movements
  5.     ;; 
  6.     ;; OBJ data        : 0x8000 -> 0x8FFF (unsigned)
  7.     ;; Window data        : 0x8800 -> 0x97FF (signed)
  8.     ;; Background data    : 0x8800 -> 0x97FF (signed)
  9.     ;; 
  10.     ;; Tiled 0xFC -> 0xFF are standard tiles (all black -> all white)
  11.     ;; 
  12.     ;; Keys:
  13.     ;; Arrow keys        : Change the speed (and direction) of the sprite
  14.     ;; Arrow keys + A    : Change the speed (and direction) of the window
  15.     ;; Arrow keys + B    : Change the speed (and direction) of the background
  16.     ;; START        : Open/close the door
  17.     ;; SELECT        : Basic fading effect
  18.     ;; 
  19.     ;; Note that the window is kept in the lower right part of the screen
  20.     ;; since it can't be made transparent
  21.  
  22.     .include    "../lib/global.s"
  23.  
  24.     .globl    .init_vram
  25.     .globl    .copy_vram
  26.     .globl    .init_wtt
  27.     .globl    .init_btt
  28.     .globl    .set_xy_wtt
  29.     .globl    .mv_sprite
  30.     .globl    .set_sprite_prop
  31.     .globl    .set_sprite_tile
  32.     .globl    .jpad
  33.  
  34.     .NBDFRAMES    = .endfilm-.film    ; Nb frames for the door
  35.     .NBSFRAMES    = 0x07            ; Nb frames for the sprite
  36.     .WINSZX        = 0x80            ; Size of the picture in the window
  37.     .WINSZY        = 0x50
  38.     .MINWINX    = .MAXWNDPOSX-.WINSZX+1 ; Bounds of the window origin
  39.     .MINWINY    = .MAXWNDPOSY-.WINSZY+1
  40.     .MAXWINX    = .MAXWNDPOSX
  41.     .MAXWINY    = .MAXWNDPOSY
  42.     .FADESTEP    = 0x10            ; Nb steps for the fading effect
  43.     .STARTFADE    = 0x06*.FADESTEP    ; Initial value for the fading effect
  44.  
  45.     .CLOSED        = 0x00
  46.     .OPENING    = 0x01
  47.     .OPENED        = 0x02
  48.     .CLOSING    = 0x03
  49.  
  50.     .module    Space
  51.  
  52.     .area    _BSS
  53.  
  54. .time:                ; Global "time" value (counter)
  55.     .ds    0x01
  56.  
  57. .doorstate:            ; State of the door (OPENED, CLOSED...)
  58.     .ds    0x01
  59. .doorpos:            ; Current position in the door animation
  60.     .ds    0x01
  61.  
  62. .color:                ; Current color for fading effect
  63.     .ds    0x01
  64.  
  65. .sframe:            ; Current frame of the sprite
  66.     .ds    0x01
  67.  
  68. .bposx:                ; Background position (fixed point)
  69.     .ds    0x02
  70. .bposy:
  71.     .ds    0x02
  72. .bspx:                ; Background speed (fixed point)
  73.     .ds    0x02
  74. .bspy:
  75.     .ds    0x02
  76.  
  77. .wposx:                ; Window position (fixed point)
  78.     .ds    0x02
  79. .wposy:
  80.     .ds    0x02
  81. .wspx:                ; Window speed (fixed point)
  82.     .ds    0x02
  83. .wspy:
  84.     .ds    0x02
  85.  
  86. .sposx:                ; Sprite position (fixed point)
  87.     .ds    0x02
  88. .sposy:
  89.     .ds    0x02
  90. .sspx:                ; Sprite speed (fixed point)
  91.     .ds    0x02
  92. .sspy:
  93.     .ds    0x02
  94.  
  95.     .area    _CODE
  96.  
  97. _main::
  98.     DI            ; Disable interrupts
  99.     ;; Turn the screen off
  100.     CALL    .display_off
  101.  
  102.     XOR    A
  103.     LD    (.time),A
  104.     LD    (.color),A
  105.  
  106.     LD    A,#0b11100100
  107.     LDH    (.BGP),A
  108.     LDH    (.OBP0),A
  109.  
  110.     ; Initialize tiles
  111.     LD    HL,#0x8000
  112.     LD    DE,#0x1000
  113.     LD    B,#0x00
  114.     CALL    .init_vram    ; Init the tile set at 0x8000 with 0x00
  115.     LD    B,#0xFF
  116.     CALL    .init_btt    ; Init the tiles tables with 0xFF
  117.     CALL    .init_wtt
  118.  
  119.     LD    BC,#.tp0    ; Move tiles (standard tiles)
  120.     LD    HL,#0x9000-(.endtp0-.tp0)
  121.     LD    DE,#.endtp0-.tp0
  122.     CALL    .copy_vram
  123.  
  124.     LD    BC,#.tp1    ; Move tiles (earth)
  125.     LD    HL,#0x8000
  126.     LD    DE,#.endtp1-.tp1
  127.     CALL    .copy_vram
  128.  
  129.     LD    BC,#.tp2    ; Move tiles (door)
  130.     LD    HL,#0x8800
  131.     LD    DE,#.endtp2-.tp2
  132.     CALL    .copy_vram
  133.  
  134.     LD    BC,#.tp3    ; Move tiles (background)
  135.     LD    HL,#0x9000
  136.     LD    DE,#.endtp3-.tp3
  137.     CALL    .copy_vram
  138.  
  139.     ;; Draw the background
  140.     LD    BC,#.bkg_tiles
  141.     LD    HL,#0x9800
  142.     LD    DE,#0x0400    ; One whole GB Screen
  143.     CALL    .copy_vram
  144.  
  145.     ;; Draw the frame in the window
  146.     LD    BC,#.frame_tiles
  147.     LD    DE,#0x0000/8    ; Place image at (0x00,0x00)
  148.     LD    HL,#0x8050/8    ; Image size is 0x80 x 0x50
  149.     CALL    .set_xy_wtt
  150.  
  151.     ;; Draw the door in the window
  152.     LD    BC,#.door1_tiles
  153.     LD    DE,#0x1010/8    ; Place image at (0x10,0x10)
  154.     LD    HL,#0x6030/8    ; Image size is 0x60 x 0x30
  155.     CALL    .set_xy_wtt
  156.     LD    A,#.CLOSED
  157.     LD    (.doorstate),A
  158.  
  159.     ; Initialize background
  160.     XOR    A
  161.     LD    (.bposx),A
  162.     LDH    (.SCX),A
  163.     LD    (.bposx+1),A
  164.     LD    (.bposy),A
  165.     LDH    (.SCY),A
  166.     LD    (.bposy+1),A
  167.     LD    A,#-0x01
  168.     LD    (.bspx),A
  169.     XOR    A
  170.     LD    (.bspx+1),A
  171.     XOR    A
  172.     LD    (.bspy),A
  173.     LD    A,#0x80
  174.     LD    (.bspy+1),A
  175.  
  176.     ; Initialize window
  177.     LD    A,#.MAXWNDPOSX
  178.     LD    (.wposx),A
  179.     LDH    (.WX),A
  180.     XOR    A
  181.     LD    (.wposx+1),A
  182.     LD    A,#.MAXWNDPOSY
  183.     LD    (.wposy),A
  184.     LDH    (.WY),A
  185.     XOR    A
  186.     LD    (.wposy+1),A
  187.     LD    A,#-0x01
  188.     LD    (.wspx),A
  189.     LD    A,#0x80
  190.     LD    (.wspx+1),A
  191.     LD    A,#-0x01
  192.     LD    (.wspy),A
  193.     LD    A,#0xC0
  194.     LD    (.wspy+1),A
  195.  
  196.     ; Initialize sprite
  197.     XOR    A
  198.     LD    (.sframe),A
  199.     LD    C,#0x00        ; Sprite 0x00
  200.     LD    D,#0x00        ; Default sprite properties
  201.     CALL    .set_sprite_prop
  202.     LD    C,#0x01        ; Sprite 0x01
  203.     LD    D,#0x00        ; Default sprite properties
  204.     CALL    .set_sprite_prop
  205.  
  206.     LD    A,#0x10
  207.     LD    (.sposx),A
  208.     XOR    A
  209.     LD    (.sposx+1),A
  210.     LD    A,#0x10
  211.     LD    (.sposy),A
  212.     XOR    A
  213.     LD    (.sposy+1),A
  214.     XOR    A
  215.     LD    (.sspx),A
  216.     LD    A,#0x40
  217.     LD    (.sspx+1),A
  218.     XOR    A
  219.     LD    (.sspy),A
  220.     LD    A,#0x40
  221.     LD    (.sspy+1),A
  222.     CALL    .tile_sprite    ; Set sprite tiles
  223.     CALL    .place_sprite    ; Place sprites
  224.  
  225.     LD    A,#0b11100111    ; LCD        = On
  226.                 ; WindowBank    = 0x9C00
  227.                 ; Window    = On
  228.                 ; BG Chr    = 0x8800
  229.                 ; BG Bank    = 0x9800
  230.                 ; OBJ        = 8x16
  231.                 ; OBJ        = On
  232.                 ; BG        = On
  233.     LDH    (.LCDC),A
  234.     EI            ; Enable interrupts
  235. 1$:
  236.     LD    A,(.time)
  237.     INC    A
  238.     LD    (.time),A
  239.  
  240.     LD    B,#0x04        ; Skip four VBLs (slow down animation)
  241. 2$:
  242.     CALL    .wait_vbl_done
  243.     DEC    B
  244.     JR    NZ,2$
  245.  
  246.     CALL    .fade
  247.     CALL    .door
  248.     CALL    .scroll
  249.     CALL    .animate_sprite
  250.  
  251.     CALL    .jpad
  252.     LD    D,A
  253.  
  254.     AND    #.B        ; Is B pressed ?
  255.     JP    NZ,10$
  256.  
  257.     LD    A,D
  258.     AND    #.A        ; Is A pressed ?
  259.     JP    NZ,20$
  260.  
  261.     LD    A,D
  262.     AND    #.SELECT    ; Is SELECT pressed ?
  263.     JR    Z,3$
  264.     LD    A,#.STARTFADE
  265.     LD    (.color),A
  266. 3$:
  267.     LD    A,D
  268.     AND    #.START        ; Is START pressed ?
  269.     JR    Z,5$
  270.     LD    A,(.doorstate)
  271.     CP    #.CLOSED
  272.     JR    NZ,4$
  273.     LD    A,#.OPENING
  274.     LD    (.doorstate),A
  275.     XOR    A
  276.     LD    (.doorpos),A
  277.     JR    5$
  278. 4$:
  279.     CP    #.OPENED
  280.     JR    NZ,5$
  281.     LD    A,#.CLOSING
  282.     LD    (.doorstate),A
  283.     LD    A,#.NBDFRAMES
  284.     LD    (.doorpos),A
  285. 5$:
  286.     LD    A,D
  287.     AND    #.UP        ; Is UP pressed ?
  288.     JR    Z,6$
  289.     LD    BC,#0x0010
  290.     LD    A,(.sspy)    ; Load speed into HL
  291.     LD    H,A
  292.     LD    A,(.sspy+1)
  293.     LD    L,A
  294.     LD    A,L        ; Substract BC from HL
  295.     SUB    C
  296.     LD    (.sspy+1),A
  297.     LD    A,H
  298.     SBC    B
  299.     LD    (.sspy),A    ; Store new speed
  300.     JR    7$
  301. 6$:
  302.     LD    A,D
  303.     AND    #.DOWN        ; Is DOWN pressed ?
  304.     JR    Z,7$
  305.     LD    BC,#0x0010
  306.     LD    A,(.sspy)    ; Load speed into HL
  307.     LD    H,A
  308.     LD    A,(.sspy+1)
  309.     LD    L,A
  310.     ADD    HL,BC        ; Add them
  311.     LD    A,H        ; Store new speed
  312.     LD    (.sspy),A
  313.     LD    A,L
  314.     LD    (.sspy+1),A
  315. 7$:
  316.     LD    A,D
  317.     AND    #.LEFT        ; Is LEFT pressed ?
  318.     JR    Z,8$
  319.     LD    BC,#0x0010
  320.     LD    A,(.sspx)    ; Load speed into HL
  321.     LD    H,A
  322.     LD    A,(.sspx+1)
  323.     LD    L,A
  324.     LD    A,L        ; Substract BC from HL
  325.     SUB    C
  326.     LD    (.sspx+1),A
  327.     LD    A,H
  328.     SBC    B
  329.     LD    (.sspx),A    ; Store new speed
  330.     JP    1$
  331. 8$:
  332.     LD    A,D
  333.     AND    #.RIGHT        ; Is RIGHT pressed ?
  334.     JP    Z,1$
  335.     LD    BC,#0x0010
  336.     LD    A,(.sspx)    ; Load speed into HL
  337.     LD    H,A
  338.     LD    A,(.sspx+1)
  339.     LD    L,A
  340.     ADD    HL,BC        ; Add them
  341.     LD    A,H        ; Store new speed
  342.     LD    (.sspx),A
  343.     LD    A,L
  344.     LD    (.sspx+1),A
  345.     JP    1$
  346.  
  347. 10$:
  348.     LD    A,D
  349.     AND    #.UP        ; Is UP pressed ?
  350.     JP    Z,11$
  351.     LD    BC,#0x0010
  352.     LD    A,(.bspy)    ; Load speed into HL
  353.     LD    H,A
  354.     LD    A,(.bspy+1)
  355.     LD    L,A
  356.     LD    A,L        ; Substract BC from HL
  357.     SUB    C
  358.     LD    (.bspy+1),A
  359.     LD    A,H
  360.     SBC    B
  361.     LD    (.bspy),A    ; Store new speed
  362.     JR    12$
  363. 11$:
  364.     LD    A,D
  365.     AND    #.DOWN        ; Is DOWN pressed ?
  366.     JP    Z,12$
  367.     LD    BC,#0x0010
  368.     LD    A,(.bspy)    ; Load speed into HL
  369.     LD    H,A
  370.     LD    A,(.bspy+1)
  371.     LD    L,A
  372.     ADD    HL,BC        ; Add them
  373.     LD    A,H        ; Store new speed
  374.     LD    (.bspy),A
  375.     LD    A,L
  376.     LD    (.bspy+1),A
  377. 12$:
  378.     LD    A,D
  379.     AND    #.LEFT        ; Is LEFT pressed ?
  380.     JP    Z,13$
  381.     LD    BC,#0x0010
  382.     LD    A,(.bspx)    ; Load speed into HL
  383.     LD    H,A
  384.     LD    A,(.bspx+1)
  385.     LD    L,A
  386.     LD    A,L        ; Substract BC from HL
  387.     SUB    C
  388.     LD    (.bspx+1),A
  389.     LD    A,H
  390.     SBC    B
  391.     LD    (.bspx),A    ; Store new speed
  392.     JP    1$
  393. 13$:
  394.     LD    A,D
  395.     AND    #.RIGHT        ; Is RIGHT pressed ?
  396.     JP    Z,1$
  397.     LD    BC,#0x0010
  398.     LD    A,(.bspx)    ; Load speed into HL
  399.     LD    H,A
  400.     LD    A,(.bspx+1)
  401.     LD    L,A
  402.     ADD    HL,BC        ; Add them
  403.     LD    A,H        ; Store new speed
  404.     LD    (.bspx),A
  405.     LD    A,L
  406.     LD    (.bspx+1),A
  407.     JP    1$
  408.  
  409. 20$:
  410.     LD    A,D
  411.     AND    #.UP        ; Is UP pressed ?
  412.     JP    Z,21$
  413.     LD    BC,#0x0010
  414.     LD    A,(.wspy)    ; Load speed into HL
  415.     LD    H,A
  416.     LD    A,(.wspy+1)
  417.     LD    L,A
  418.     LD    A,L        ; Substract BC from HL
  419.     SUB    C
  420.     LD    (.wspy+1),A
  421.     LD    A,H
  422.     SBC    B
  423.     LD    (.wspy),A    ; Store new speed
  424.     JR    22$
  425. 21$:
  426.     LD    A,D
  427.     AND    #.DOWN        ; Is DOWN pressed ?
  428.     JP    Z,22$
  429.     LD    BC,#0x0010
  430.     LD    A,(.wspy)    ; Load speed into HL
  431.     LD    H,A
  432.     LD    A,(.wspy+1)
  433.     LD    L,A
  434.     ADD    HL,BC        ; Add them
  435.     LD    A,H        ; Store new speed
  436.     LD    (.wspy),A
  437.     LD    A,L
  438.     LD    (.wspy+1),A
  439. 22$:
  440.     LD    A,D
  441.     AND    #.LEFT        ; Is LEFT pressed ?
  442.     JP    Z,23$
  443.     LD    BC,#0x0010
  444.     LD    A,(.wspx)    ; Load speed into HL
  445.     LD    H,A
  446.     LD    A,(.wspx+1)
  447.     LD    L,A
  448.     LD    A,L        ; Substract BC from HL
  449.     SUB    C
  450.     LD    (.wspx+1),A
  451.     LD    A,H
  452.     SBC    B
  453.     LD    (.wspx),A    ; Store new speed
  454.     JP    1$
  455. 23$:
  456.     LD    A,D
  457.     AND    #.RIGHT        ; Is RIGHT pressed ?
  458.     JP    Z,1$
  459.     LD    BC,#0x0010
  460.     LD    A,(.wspx)    ; Load speed into HL
  461.     LD    H,A
  462.     LD    A,(.wspx+1)
  463.     LD    L,A
  464.     ADD    HL,BC        ; Add them
  465.     LD    A,H        ; Store new speed
  466.     LD    (.wspx),A
  467.     LD    A,L
  468.     LD    (.wspx+1),A
  469.     JP    1$
  470.  
  471.     RET
  472.  
  473.     ;; Fade the screen (off and on)
  474. .fade:
  475.  
  476.     LD    A,(.color)    ; Load color into A
  477.     CP    #0x00
  478.     RET    Z
  479.     CP    #.STARTFADE
  480.     JR    NZ,1$
  481.     LD    A,#0b11111001
  482.     JR    6$
  483. 1$:
  484.     CP    #.STARTFADE-.FADESTEP
  485.     JR    NZ,2$
  486.     LD    A,#0b11111110
  487.     JR    6$
  488. 2$:
  489.     CP    #.STARTFADE-0x02*.FADESTEP
  490.     JR    NZ,3$
  491.     LD    A,#0b11111111
  492.     JR    6$
  493. 3$:
  494.     CP    #.STARTFADE-0x03*.FADESTEP
  495.     JR    NZ,4$
  496.     LD    A,#0b11111110
  497.     JR    6$
  498. 4$:
  499.     CP    #.STARTFADE-0x04*.FADESTEP
  500.     JR    NZ,5$
  501.     LD    A,#0b11111001
  502.     JR    6$
  503. 5$:
  504.     CP    #.STARTFADE-0x05*.FADESTEP
  505.     JR    NZ,7$
  506.     LD    A,#0b11100100
  507. 6$:
  508.     LDH    (.BGP),A
  509. 7$:
  510.     LD    A,(.color)
  511.     DEC    A
  512.     LD    (.color),A
  513.     RET
  514.  
  515.     ;; Scroll the background, the window and the sprite
  516. .scroll:
  517.  
  518.     ;; Update background
  519.     LD    A,(.bposx)    ; Load background position into HL
  520.     LD    H,A
  521.     LD    A,(.bposx+1)
  522.     LD    L,A
  523.     LD    A,(.bspx)    ; Load background speed into BC
  524.     LD    B,A
  525.     LD    A,(.bspx+1)
  526.     LD    C,A
  527.     ADD    HL,BC        ; Add them
  528.     LD    A,L        ; Store new background position
  529.     LD    (.bposx+1),A
  530.     LD    A,H
  531.     LD    (.bposx),A
  532.     LDH    (.SCX),A    ; Update position
  533.  
  534.     LD    A,(.bposy)    ; Load background position into HL
  535.     LD    H,A
  536.     LD    A,(.bposy+1)
  537.     LD    L,A
  538.     LD    A,(.bspy)    ; Load background speed into BC
  539.     LD    B,A
  540.     LD    A,(.bspy+1)
  541.     LD    C,A
  542.     ADD    HL,BC        ; Add them
  543.     LD    A,L        ; Store new background position
  544.     LD    (.bposy+1),A
  545.     LD    A,H
  546.     LD    (.bposy),A
  547.     LDH    (.SCY),A    ; Update position
  548.  
  549.     ;; Update window
  550.     LD    A,(.wspx)    ; Load window speed into BC
  551.     LD    B,A
  552.     LD    A,(.wspx+1)
  553.     LD    C,A
  554.     LD    A,(.wposx)    ; Load window position into HL
  555.     LD    H,A
  556.     LD    A,(.wposx+1)
  557.     LD    L,A
  558.     ADD    HL,BC        ; Add them
  559.     LD    A,L        ; Store new window position
  560.     LD    (.wposx+1),A
  561.     LD    A,H
  562.     LD    (.wposx),A
  563.  
  564.     ;; X position
  565.     LD    A,(.wposx)    ; Check window position
  566.     LD    H,#0x00        ; We must use 16 bit registers since the
  567.     LD    L,A        ;  window is not less than 0x80 pixels
  568.     LD    BC,#.MAXWINX
  569.     LD    A,L        ; Substract BC from HL
  570.     SUB    C
  571.     LD    A,H
  572.     SBC    B
  573.     AND    #0x80
  574.     JR    NZ,1$        ; Maximum value ?
  575.     LD    A,#.MAXWINX
  576.     LD    (.wposx),A    ; Correct window position
  577.     LD    A,(.wspx+1)    ; Load window speed into BC
  578.     LD    C,A
  579.     LD    A,(.wspx)
  580.     LD    B,A
  581.     AND    #0x80        ; Speed is already negative ?
  582.     JR    NZ,3$
  583.     JR    2$
  584. 1$:
  585.     LD    A,(.wposx)    ; Check window position
  586.     LD    H,#0x00        ; We must use 16 bit registers since the
  587.     LD    L,A        ;  window is not less than 0x80 pixels
  588.     LD    BC,#.MINWINX+1
  589.     LD    A,L        ; Substract BC from HL
  590.     SUB    C
  591.     LD    A,H
  592.     SBC    B
  593.     AND    #0x80
  594.     JR    Z,3$        ; Minimum value ?
  595.     LD    A,#.MINWINX
  596.     LD    (.wposx),A    ; Correct window position
  597.     LD    A,(.wspx+1)    ; Load window speed into BC
  598.     LD    C,A
  599.     LD    A,(.wspx)
  600.     LD    B,A
  601.     AND    #0x80        ; Speed is already positive ?
  602.     JR    Z,3$
  603. 2$:
  604.     LD    HL,#0x00    ; Invert speed
  605.     LD    A,L        ; Substract BC from HL
  606.     SUB    C
  607.     LD    (.wspx+1),A
  608.     LD    A,H
  609.     SBC    B
  610.     LD    (.wspx),A    ; Store new speed
  611. 3$:
  612.     LD    A,(.wposx)
  613.     LDH    (.WX),A        ; Update position
  614.  
  615.     LD    A,(.wspy)    ; Load window speed into BC
  616.     LD    B,A
  617.     LD    A,(.wspy+1)
  618.     LD    C,A
  619.     LD    A,(.wposy)    ; Load window position into HL
  620.     LD    H,A
  621.     LD    A,(.wposy+1)
  622.     LD    L,A
  623.     ADD    HL,BC        ; Add them
  624.     LD    A,L        ; Store new window position
  625.     LD    (.wposy+1),A
  626.     LD    A,H
  627.     LD    (.wposy),A
  628.  
  629.     ;; Y position
  630.     LD    A,(.wposy)    ; Check window position
  631.     LD    H,#0x00        ; We must use 16 bit registers since the
  632.     LD    L,A        ;  window is not less than 0x80 pixels
  633.     LD    BC,#.MAXWINY
  634.     LD    A,L        ; Substract BC from HL
  635.     SUB    C
  636.     LD    A,H
  637.     SBC    B
  638.     AND    #0x80
  639.     JR    NZ,4$        ; Maximum value ?
  640.     LD    A,#.MAXWINY
  641.     LD    (.wposy),A    ; Correct window position
  642.     LD    A,(.wspy+1)    ; Load window speed into BC
  643.     LD    C,A
  644.     LD    A,(.wspy)
  645.     LD    B,A
  646.     AND    #0x80        ; Speed is already negative ?
  647.     JR    NZ,6$
  648.     JR    5$
  649. 4$:
  650.     LD    A,(.wposy)    ; Check window position
  651.     LD    H,#0x00        ; We must use 16 bit registers since the
  652.     LD    L,A        ;  window is not less than 0x80 pixels
  653.     LD    BC,#.MINWINY+1
  654.     LD    A,L        ; Substract BC from HL
  655.     SUB    C
  656.     LD    A,H
  657.     SBC    B
  658.     AND    #0x80
  659.     JR    Z,6$        ; Minimum value ?
  660.     LD    A,#.MINWINY
  661.     LD    (.wposy),A    ; Correct window position
  662.     LD    A,(.wspy+1)    ; Load window speed into BC
  663.     LD    C,A
  664.     LD    A,(.wspy)
  665.     LD    B,A
  666.     AND    #0x80        ; Speed is already positive ?
  667.     JR    Z,6$
  668. 5$:
  669.     LD    HL,#0x00    ; Invert speed
  670.     LD    A,L        ; Substract BC from HL
  671.     SUB    C
  672.     LD    (.wspy+1),A
  673.     LD    A,H
  674.     SBC    B
  675.     LD    (.wspy),A    ; Store new speed
  676. 6$:
  677.     LD    A,(.wposy)
  678.     LDH    (.WY),A        ; Update position
  679.  
  680.     ;; Update sprite
  681.     LD    A,(.sposx)    ; Load sprite position into HL
  682.     LD    H,A
  683.     LD    A,(.sposx+1)
  684.     LD    L,A
  685.     LD    A,(.sspx)    ; Load sprite speed into BC
  686.     LD    B,A
  687.     LD    A,(.sspx+1)
  688.     LD    C,A
  689.     ADD    HL,BC        ; Add them
  690.     LD    A,L        ; Store new sprite position
  691.     LD    (.sposx+1),A
  692.     LD    A,H
  693.     LD    (.sposx),A
  694.  
  695.     LD    A,(.sposy)    ; Load sprite position into HL
  696.     LD    H,A
  697.     LD    A,(.sposy+1)
  698.     LD    L,A
  699.     LD    A,(.sspy)    ; Load sprite speed into BC
  700.     LD    B,A
  701.     LD    A,(.sspy+1)
  702.     LD    C,A
  703.     ADD    HL,BC        ; Add them
  704.     LD    A,L        ; Store new sprite position
  705.     LD    (.sposy+1),A
  706.     LD    A,H
  707.     LD    (.sposy),A
  708.     CALL    .place_sprite    ; Update position
  709.  
  710.     RET
  711.  
  712.     ;; Open and close the door
  713. .door:
  714.     LD    A,(.doorstate)
  715.     CP    #.OPENING
  716.     JP    Z,.open_door
  717.     CP    #.CLOSING
  718.     JP    Z,.close_door
  719.     RET
  720.  
  721. .open_door:
  722.     LD    A,(.doorpos)
  723.     LD    HL,#.film+0x02
  724.     LD    B,#0x00
  725.     LD    C,A
  726.     ADD    HL,BC
  727.     LD    C,(HL)
  728.     INC    HL
  729.     LD    B,(HL)
  730.     LD    DE,#0x1010/8    ; Place image at (0x10,0x10)
  731.     LD    HL,#0x6030/8    ; Image size is 0x60 x 0x30
  732.     CALL    .set_xy_wtt
  733.  
  734.     LD    A,(.doorpos)
  735.     ADD    A,#0x02
  736.     LD    (.doorpos),A
  737.     CP    #.NBDFRAMES
  738.     RET    NZ
  739.     LD    A,#.OPENED
  740.     LD    (.doorstate),A
  741.     RET
  742.  
  743. .close_door:
  744.     LD    A,(.doorpos)
  745.     LD    HL,#.film-0x02
  746.     LD    B,#0x00
  747.     LD    C,A
  748.     ADD    HL,BC
  749.     LD    C,(HL)
  750.     INC    HL
  751.     LD    B,(HL)
  752.     LD    DE,#0x1010/8    ; Place image at (0x10,0x10)
  753.     LD    HL,#0x6030/8    ; Image size is 0x60 x 0x30
  754.     CALL    .set_xy_wtt
  755.  
  756.     LD    A,(.doorpos)
  757.     SUB    A,#0x02
  758.     LD    (.doorpos),A
  759.     RET    NZ
  760.     LD    A,#.CLOSED
  761.     LD    (.doorstate),A
  762.     RET
  763.  
  764.     ;; Animate sprite
  765. .animate_sprite:
  766.     LD    A,(.time)
  767.     AND    #0x07
  768.     RET    NZ
  769.  
  770.     LD    A,(.sframe)
  771.     INC    A
  772.     CP    #.NBSFRAMES
  773.     JR    NZ,1$
  774.     XOR    A
  775. 1$:
  776.     LD    (.sframe),A
  777.  
  778.     CALL    .tile_sprite
  779.     RET
  780.  
  781.     ;; Set sprite tiles
  782. .tile_sprite:
  783.     LD    A,(.sframe)
  784.     LD    HL,#.earth_tiles
  785.     RLCA
  786.     LD    B,#0x00
  787.     LD    C,A
  788.     ADD    HL,BC
  789.     LD    C,#0x00        ; Sprite 0x00
  790.     LD    A,(HL+)
  791.     LD    D,A
  792.     PUSH    HL
  793.     CALL    .set_sprite_tile
  794.     POP    HL
  795.  
  796.     LD    C,#0x01        ; Sprite 0x01
  797.     LD    A,(HL+)
  798.     LD    D,A
  799.     CALL    .set_sprite_tile
  800.  
  801.     RET
  802.  
  803.     ;; Place sprite
  804. .place_sprite:
  805.     LD    C,#0x00        ; Sprite 0x00
  806.     LD    A,(.sposx)
  807.     LD    D,A
  808.     LD    A,(.sposy)
  809.     LD    E,A
  810.     PUSH    DE        ; Store position
  811.     CALL    .mv_sprite
  812.  
  813.     LD    C,#0x01        ; Sprite 0x01
  814.     POP    DE        ; Restore position
  815.     LD    A,#0x08
  816.     ADD    A,D
  817.     LD    D,A
  818.     CALL    .mv_sprite
  819.  
  820.     RET
  821.  
  822.     .area    _DATA
  823.  
  824. .tp0:
  825.  
  826. .std_data:
  827.  
  828.     ; Basic tiles (0xFC to 0xFF)
  829.  
  830.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  831.     .byte    0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00
  832.     .byte    0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF
  833.     .byte    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  834.  
  835. .endtp0:
  836.  
  837. .tp1:
  838.  
  839. .earth_data:
  840.  
  841.     ; Tile 0x00
  842.     .byte    0x07,0x07,0x18,0x1F,0x32,0x2D,0x71,0x4E,0x70,0x4F,0xF8,0x87,0xF8,0x87,0xF8,0x87
  843.     .byte    0xFC,0x83,0xFE,0x81,0x7F,0x40,0x7F,0x40,0x3F,0x20,0x1F,0x18,0x07,0x07,0x00,0x00
  844.     .byte    0xC0,0xC0,0xF0,0x30,0x78,0x88,0x3C,0xC4,0x5C,0xA4,0x9E,0x62,0x3E,0xC2,0x3E,0xC2
  845.     .byte    0x5E,0xA2,0x7E,0x82,0x0C,0xF4,0x0C,0xF4,0x98,0x68,0xB0,0x70,0xC0,0xC0,0x00,0x00
  846.     .byte    0x07,0x07,0x1F,0x18,0x2F,0x30,0x4F,0x70,0x6F,0x50,0x9F,0xE0,0x9F,0xE0,0xBF,0xC0
  847.     .byte    0xFF,0x80,0xB7,0xC8,0x63,0x5C,0x43,0x7C,0x3F,0x20,0x1F,0x18,0x07,0x07,0x00,0x00
  848.     .byte    0xC0,0xC0,0xB0,0x70,0x18,0xE8,0x0C,0xF4,0x0C,0xF4,0x82,0x7E,0x82,0x7E,0x86,0x7A
  849.     .byte    0xC6,0x3A,0xE6,0x1A,0xF4,0x0C,0xFC,0x04,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
  850.  
  851.     ; Tile 0x08
  852.     .byte    0x07,0x07,0x1E,0x19,0x20,0x3F,0x40,0x7F,0x42,0x7D,0x81,0xFE,0x81,0xFE,0x83,0xFC
  853.     .byte    0xD7,0xA8,0xBB,0xC4,0x6E,0x51,0x7C,0x43,0x3F,0x20,0x1F,0x18,0x07,0x07,0x00,0x00
  854.     .byte    0xC0,0xC0,0x70,0xB0,0xE8,0x18,0xF4,0x0C,0xF4,0x0C,0xFE,0x02,0xFE,0x02,0xFE,0x02
  855.     .byte    0xFE,0x02,0x7E,0x82,0x3C,0xC4,0x3C,0xC4,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
  856.     .byte    0x07,0x07,0x1B,0x1C,0x20,0x3F,0x40,0x7F,0x40,0x7F,0xE0,0x9F,0x90,0xEF,0x89,0xF6
  857.     .byte    0x8D,0xF2,0x9F,0xE0,0x5E,0x61,0x6F,0x50,0x3F,0x20,0x1F,0x18,0x07,0x07,0x00,0x00
  858.     .byte    0xC0,0xC0,0xB0,0x70,0x28,0xD8,0x04,0xFC,0x2C,0xD4,0x1E,0xE2,0x1E,0xE2,0x3E,0xC2
  859.     .byte    0x7E,0x82,0xB6,0x4A,0xE4,0x1C,0xC4,0x3C,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
  860.  
  861.     ; Tile 0x10
  862.     .byte    0x07,0x07,0x18,0x1F,0x20,0x3F,0x40,0x7F,0x40,0x7F,0xEE,0x91,0xF1,0x8E,0xE0,0x9F
  863.     .byte    0xE0,0x9F,0xF1,0x8E,0x71,0x4E,0x72,0x4D,0x3F,0x20,0x1F,0x18,0x07,0x07,0x00,0x00
  864.     .byte    0xC0,0xC0,0xF0,0x30,0x08,0xF8,0x04,0xFC,0x04,0xFC,0x02,0xFE,0x02,0xFE,0x92,0x6E
  865.     .byte    0xD6,0x2A,0xFE,0x02,0xEC,0x14,0xFC,0x04,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
  866.     .byte    0x07,0x07,0x1D,0x1A,0x36,0x29,0x5C,0x63,0x6C,0x53,0xCE,0xB1,0x9F,0xE0,0x9E,0xE1
  867.     .byte    0xAE,0xD1,0xBF,0xC0,0x47,0x78,0x47,0x78,0x2F,0x30,0x1F,0x18,0x07,0x07,0x00,0x00
  868.     .byte    0xC0,0xC0,0x70,0xB0,0x08,0xF8,0x04,0xFC,0x04,0xFC,0xE2,0x1E,0x32,0xCE,0x0E,0xF2
  869.     .byte    0x0E,0xF2,0x1E,0xE2,0x1C,0xE4,0x2C,0xD4,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
  870.  
  871.     ; Tile 0x18
  872.     .byte    0x07,0x07,0x1E,0x19,0x33,0x2C,0x49,0x76,0x42,0x7D,0xC4,0xBB,0xC1,0xBE,0xC1,0xBE
  873.     .byte    0xE2,0x9D,0xF3,0x8C,0x78,0x47,0x78,0x47,0x3C,0x23,0x1C,0x1B,0x07,0x07,0x00,0x00
  874.     .byte    0xC0,0xC0,0x70,0xB0,0x68,0x98,0xC4,0x3C,0xC4,0x3C,0xEE,0x12,0xF2,0x0E,0xE2,0x1E
  875.     .byte    0xE2,0x1E,0xF2,0x0E,0x7C,0x84,0x7C,0x84,0xF8,0x08,0xF0,0x30,0xC0,0xC0,0x00,0x00
  876.  
  877. .endtp1:
  878.  
  879. .tp2:
  880.  
  881. .frame_data:
  882.  
  883.     ; Tile 0x00
  884.     .byte    0xFF,0x00,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F
  885.     .byte    0xFF,0x00,0x01,0xFE,0x03,0xFC,0x07,0xF8,0x0F,0xF0,0x1F,0xE0,0x3F,0xC0,0x7F,0x80
  886.     .byte    0xFF,0x00,0xFE,0x01,0xFC,0x03,0xF8,0x07,0xF0,0x0F,0xE0,0x1F,0xC0,0x3F,0x80,0x7F
  887.     .byte    0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF
  888.     .byte    0xFF,0x00,0xFF,0x01,0xFD,0x03,0xF9,0x07,0xF1,0x0F,0xE1,0x1F,0xC1,0x3F,0x81,0x7F
  889.     .byte    0x80,0x7F,0x81,0x7E,0x83,0x7C,0x87,0x78,0x8F,0x70,0x9F,0x60,0xBF,0x40,0xFF,0x00
  890.     .byte    0xFF,0x70,0xFF,0x98,0xEF,0xB8,0xCF,0xF8,0xFF,0x70,0xFF,0x00,0xFF,0x00,0xFF,0x01
  891.     .byte    0xFF,0x00,0xFE,0x01,0xFC,0x03,0xF8,0x07,0xF0,0x0F,0xE0,0x1F,0xC0,0x3F,0xFF,0xFF
  892.  
  893.     ; Tile 0x08
  894.     .byte    0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF
  895.     .byte    0x00,0xFF,0x01,0xFE,0x03,0xFC,0x07,0xF8,0x0F,0xF0,0x1F,0xE0,0x3F,0xC0,0xFF,0xFF
  896.     .byte    0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF
  897.     .byte    0xFF,0x0E,0xFF,0x13,0xFD,0x17,0xF9,0x1F,0xFE,0x0F,0xE0,0x1F,0xC0,0x3F,0x80,0xFF
  898.     .byte    0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF
  899.     .byte    0xFF,0x01,0xFF,0x01,0xFD,0x03,0xF9,0x07,0xF1,0x0F,0xE1,0x1F,0xC1,0x3F,0x81,0x7F
  900.     .byte    0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F
  901.     .byte    0x01,0xFF,0x01,0xFF,0x03,0xFD,0x07,0xF9,0x0F,0xF1,0x1F,0xE1,0x3F,0xC1,0x7F,0x81
  902.  
  903.     ; Tile 0x10
  904.     .byte    0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01
  905.     .byte    0x01,0xFF,0x01,0xFE,0x03,0xFC,0x77,0xF8,0xFF,0x98,0xEF,0xB8,0xCF,0xF8,0x7F,0xF0
  906.     .byte    0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x0E,0xFF,0x13,0xFD,0x17,0xF9,0x1F,0xFF,0x0E
  907.     .byte    0x80,0x7F,0x81,0x7E,0x83,0x7C,0x87,0x78,0x8F,0x70,0x9F,0x60,0xBF,0x40,0xFF,0x7F
  908.     .byte    0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0xFF,0xFF
  909.  
  910. .door1_data:
  911.  
  912.     ; Tile 0x15
  913.     .byte    0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF
  914.     .byte    0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF
  915.     .byte    0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF
  916.  
  917. .door2_data:
  918.  
  919.     ; Tile 0x18
  920.     .byte    0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF
  921.     .byte    0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF
  922.     .byte    0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF
  923.     .byte    0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  924.  
  925. .door3_data:
  926.  
  927.     ; Tile 0x1C
  928.     .byte    0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF
  929.     .byte    0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF
  930.     .byte    0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF
  931.     .byte    0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  932.  
  933. .door4_data:
  934.  
  935.     ; Tile 0x20
  936.     .byte    0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  937.  
  938. .endtp2:
  939.  
  940. .tp3:
  941.  
  942. .bkg_data:
  943.  
  944.     ; Tile 0x00
  945.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF
  946.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF
  947.     .byte    0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  948.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xF7,0xFF,0xFF
  949.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  950.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F
  951.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  952.     .byte    0xFF,0xFF,0xDF,0xFF,0xEF,0xFF,0xFF,0xF7,0xFF,0xFB,0xFF,0xFD,0xFF,0xFE,0xFE,0xFF
  953.  
  954.     ; Tile 0x08
  955.     .byte    0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7D,0xFE,0x7C,0x39
  956.     .byte    0xFF,0xFF,0xF7,0xFF,0xEF,0xFF,0xFF,0xDF,0xFF,0xBF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF
  957.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF
  958.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFE,0xFF,0xFD
  959.     .byte    0xBB,0x01,0xC7,0x83,0xC7,0x83,0xC7,0x83,0xBB,0x01,0x7C,0x39,0x7D,0xFE,0xFF,0xFF
  960.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F
  961.     .byte    0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF
  962.     .byte    0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFB,0xAF,0x77,0x27,0x8F,0xDF,0x8F,0x27,0x8F
  963.  
  964.     ; Tile 0x10
  965.     .byte    0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  966.     .byte    0xFF,0xFB,0xFF,0xF7,0xEF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  967.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  968.     .byte    0xFF,0xBF,0xFF,0xDF,0xEF,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  969.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  970.     .byte    0xFF,0xFF,0xFF,0xFE,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  971.     .byte    0xAF,0x77,0xFF,0xFB,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  972.     .byte    0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF
  973.  
  974.     ; Tile 0x18
  975.     .byte    0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF
  976.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF
  977.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF
  978.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0x7D,0xFE,0x7C,0x39
  979.     .byte    0xFF,0xFF,0xF7,0xFF,0xEF,0xFF,0xFF,0xDF,0xFF,0xBF,0xFF,0x7F,0x7F,0xFF,0xFF,0xFF
  980.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF
  981.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  982.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFD
  983.  
  984.     ; Tile 0x20
  985.     .byte    0xFF,0xFF,0xDF,0xFF,0xEF,0xFF,0xFF,0xF7,0xFF,0xFB,0xFE,0xFD,0xFD,0xFE,0xFE,0xFF
  986.     .byte    0xAB,0x11,0xC7,0x83,0x83,0xC7,0xC7,0x83,0xAB,0x11,0x7C,0x39,0x7D,0xFE,0xFE,0xFF
  987.     .byte    0xFF,0xFF,0xFF,0xFF,0xFB,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0x7F
  988.     .byte    0xFB,0xFF,0xFF,0xFD,0xFE,0xFE,0xFE,0xFF,0xFE,0xFE,0xFF,0xFD,0xFB,0xFF,0xFF,0xFF
  989.     .byte    0xEF,0xFF,0xFF,0xDF,0x3F,0xBF,0x3F,0x7F,0x3F,0xBF,0xFF,0xDF,0xEF,0xFF,0xFF,0xFF
  990.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFB,0xFF,0xFF,0xFF,0xFF
  991.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFD,0xFE,0xFE,0xFD
  992.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF
  993.  
  994.     ; Tile 0x28
  995.     .byte    0xF7,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  996.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  997.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF
  998.     .byte    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  999.     .byte    0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  1000.  
  1001. .endtp3:
  1002.  
  1003.     ; Image size: 0x40 x 0x40
  1004.     ; Number of tiles (total - unique): 0x40 - 0x2D
  1005.  
  1006. .bkg_tiles:
  1007.  
  1008.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1009.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1010.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1011.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1012.  
  1013.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1014.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1015.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1016.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1017.  
  1018.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1019.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1020.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1021.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1022.  
  1023.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1024.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1025.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1026.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1027.  
  1028.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1029.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1030.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1031.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1032.  
  1033.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1034.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1035.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1036.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1037.  
  1038.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1039.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1040.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1041.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1042.  
  1043.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1044.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1045.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1046.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1047.  
  1048.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1049.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1050.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1051.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1052.  
  1053.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1054.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1055.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1056.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1057.  
  1058.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1059.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1060.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1061.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1062.  
  1063.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1064.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1065.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1066.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1067.  
  1068.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1069.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1070.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1071.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1072.  
  1073.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1074.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1075.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1076.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1077.  
  1078.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1079.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1080.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1081.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1082.  
  1083.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1084.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1085.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1086.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1087.  
  1088.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1089.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1090.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1091.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1092.  
  1093.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1094.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1095.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1096.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1097.  
  1098.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1099.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1100.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1101.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1102.  
  1103.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1104.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1105.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1106.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1107.  
  1108.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1109.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1110.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1111.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1112.  
  1113.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1114.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1115.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1116.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1117.  
  1118.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1119.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1120.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1121.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1122.  
  1123.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1124.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1125.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1126.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1127.  
  1128.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1129.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1130.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1131.     .byte    0x00,0x01,0x02,0x03,0xFC,0xFC,0x04,0xFC
  1132.  
  1133.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1134.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1135.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1136.     .byte    0xFC,0x05,0x06,0xFC,0x07,0x08,0x09,0x0A
  1137.  
  1138.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1139.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1140.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1141.     .byte    0xFC,0xFC,0xFC,0x02,0x0B,0x0C,0x0D,0xFC
  1142.  
  1143.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1144.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1145.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1146.     .byte    0x0E,0x0F,0x10,0xFC,0x11,0x12,0x13,0x14
  1147.  
  1148.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1149.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1150.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1151.     .byte    0x15,0x16,0x17,0xFC,0x18,0x19,0x1A,0xFC
  1152.  
  1153.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1154.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1155.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1156.     .byte    0x1B,0x1C,0x1D,0xFC,0xFC,0x1E,0x1F,0x20
  1157.  
  1158.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1159.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1160.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1161.     .byte    0x21,0x22,0xFC,0x23,0x24,0x25,0xFC,0x26
  1162.  
  1163.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1164.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1165.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1166.     .byte    0x27,0x13,0x28,0x29,0x2A,0x2B,0x2C,0x11
  1167.  
  1168.     ; Image size: 0x10 x 0x70
  1169.     ; Number of tiles (total - unique): 0x1C - 0x1C
  1170.  
  1171. .earth_tiles:
  1172.  
  1173.     .byte    0x00,0x02
  1174.     .byte    0x04,0x06
  1175.     .byte    0x08,0x0A
  1176.     .byte    0x0C,0x0E
  1177.     .byte    0x10,0x12
  1178.     .byte    0x14,0x16
  1179.     .byte    0x18,0x1A
  1180.  
  1181.     ; Image size: 0x80 x 0x50
  1182.     ; Number of tiles (total - unique): 0xA0 - 0x15
  1183.  
  1184. .frame_tiles:
  1185.  
  1186.     .byte    0x80,0x81,0xFD,0x82,0x83,0x81,0xFD,0x82,0x83,0x81,0xFD,0x82,0x83,0x81,0xFD,0x84
  1187.     .byte    0x85,0x86,0x87,0x88,0x89,0x8A,0x87,0x88,0x89,0x8A,0x87,0x88,0x89,0x8A,0x8B,0x8C
  1188.     .byte    0xFD,0x8D,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8E,0x8F
  1189.     .byte    0x82,0x8C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x85,0x90
  1190.     .byte    0x8E,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0x8D
  1191.     .byte    0x85,0x90,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x82,0x8C
  1192.     .byte    0xFD,0x8D,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8E,0x8F
  1193.     .byte    0x82,0x8C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x85,0x90
  1194.     .byte    0x8E,0x91,0xFD,0x82,0x83,0x81,0xFD,0x82,0x83,0x81,0xFD,0x82,0x83,0x81,0x92,0x8D
  1195.     .byte    0x93,0x8A,0x87,0x88,0x89,0x8A,0x87,0x88,0x89,0x8A,0x87,0x88,0x89,0x8A,0x87,0x94
  1196.  
  1197.     ; Image size: 0x60 x 0x30
  1198.     ; Number of tiles (total - unique): 0x48 - 0x03
  1199.  
  1200. .door1_tiles:
  1201.  
  1202.     .byte    0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95
  1203.     .byte    0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96
  1204.     .byte    0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97
  1205.     .byte    0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95
  1206.     .byte    0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96
  1207.     .byte    0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97
  1208.  
  1209.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1210.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1211.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1212.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1213.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1214.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1215.  
  1216.     ; Image size: 0x60 x 0x30
  1217.     ; Number of tiles (total - unique): 0x48 - 0x04
  1218.  
  1219. .door2_tiles:
  1220.  
  1221.     .byte    0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98
  1222.     .byte    0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99
  1223.     .byte    0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A
  1224.     .byte    0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98
  1225.     .byte    0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99
  1226.     .byte    0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B
  1227.  
  1228.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1229.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1230.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1231.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1232.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1233.  
  1234.     ; Image size: 0x60 x 0x30
  1235.     ; Number of tiles (total - unique): 0x48 - 0x04
  1236.  
  1237. .door3_tiles:
  1238.  
  1239.     .byte    0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C
  1240.     .byte    0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D
  1241.     .byte    0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E
  1242.     .byte    0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C,0x9C
  1243.     .byte    0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D
  1244.     .byte    0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F
  1245.  
  1246.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1247.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1248.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1249.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1250.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1251.  
  1252.     ; Image size: 0x60 x 0x30
  1253.     ; Number of tiles (total - unique): 0x48 - 0x01
  1254.  
  1255. .door4_tiles:
  1256.  
  1257.     .byte    0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95
  1258.     .byte    0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96
  1259.     .byte    0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97
  1260.     .byte    0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95
  1261.     .byte    0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96
  1262.     .byte    0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0
  1263.  
  1264.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1265.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1266.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1267.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1268.     .byte    0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC
  1269.  
  1270. .film:
  1271.     .word    .door1_tiles+0x0C*0
  1272.     .word    .door2_tiles+0x0C*0
  1273.     .word    .door3_tiles+0x0C*0
  1274.     .word    .door4_tiles+0x0C*0
  1275.     .word    .door1_tiles+0x0C*1
  1276.     .word    .door2_tiles+0x0C*1
  1277.     .word    .door3_tiles+0x0C*1
  1278.     .word    .door4_tiles+0x0C*1
  1279.     .word    .door1_tiles+0x0C*2
  1280.     .word    .door2_tiles+0x0C*2
  1281.     .word    .door3_tiles+0x0C*2
  1282.     .word    .door4_tiles+0x0C*2
  1283.     .word    .door1_tiles+0x0C*3
  1284.     .word    .door2_tiles+0x0C*3
  1285.     .word    .door3_tiles+0x0C*3
  1286.     .word    .door4_tiles+0x0C*3
  1287.     .word    .door1_tiles+0x0C*4
  1288.     .word    .door2_tiles+0x0C*4
  1289.     .word    .door3_tiles+0x0C*4
  1290.     .word    .door4_tiles+0x0C*4
  1291.     .word    .door1_tiles+0x0C*5
  1292.     .word    .door2_tiles+0x0C*5
  1293.     .word    .door3_tiles+0x0C*5
  1294.     .word    .door4_tiles+0x0C*5
  1295. .endfilm:
  1296.     .word    .door1_tiles+0x0C*6
  1297.